/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Servicios;

import Biblioteca.*;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import mongolo.Dependencias;

public class SM {

    static IMapeoObjetos mapo = new MapeoObjetos();
    // <editor-fold defaultstate="collapsed" desc="Propiedades">       
    // <editor-fold defaultstate="collapsed" desc="Ultimo Error Guardado">
    public static String lastError;

    public static String getLastError() {
        return lastError;
    }

    public static void setLastError(String lastError) {
        SM.lastError = lastError;
    }
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Ultimo usuario seleccionado">
    private static Usua UsuaSelected;

    public static Usua getUsuaSelected() {
        return UsuaSelected;
    }

    public static void setUsuaSelected(Usua UsuaSelected) {
        SM.UsuaSelected = UsuaSelected;
    }
    // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Propiedades">  
    public static ArrayList<peliAquiladas> LisPeliAlquiDependencias;
    public static ArrayList<peliAquiladas> getLisPeliAlquiDependencias() {
        return LisPeliAlquiDependencias;
    }
    public static void setLisPeliAlquiDependencias(ArrayList<peliAquiladas> LisPeliAlquiDependencias) {
        SM.LisPeliAlquiDependencias = LisPeliAlquiDependencias;
    }
    
    // </editor-fold>
    // </editor-fold>
    
    /**
     * Encuentra un usuario en base al id... 
     * @param Es el id del usuario 
     * @return devuelve toda la clase
     */
    public static Usua findUsua(String idUsua) {
        Usua u = null;
        try {
            ArrayList<Usua> LisUsua = mapo.getUsua(idUsua);
            for (Usua usua : LisUsua) {
                u = usua;
                break;
            }
        } catch (Exception es) {
            u = null;
        }
        return u;
    }
    /**
     * Encuanra el nombre del usuario con el ID, sino retorna vacio
     * @param idUsua Id a buscar
     * @return El nombre del usuario 
     */
    public static String findNomUsua(String idUsua) {
        String NomUsua = "";
        try {
            ArrayList<Usua> LisUsua = mapo.getUsua(idUsua);
            for (Usua usua : LisUsua) {
                NomUsua = usua.nom;
            }
        } catch (Exception es) {
            NomUsua = "";
        }
        return NomUsua;
    }
    /**
     * Encuentra el id de un usuario con el nombre, si hay un error retorna vacio
     * @param nomUsua
     * @return el id del usua
     */
    public static String findIdUsua(String nomUsua) {
        String idUsua = "";
        try {
            ArrayList<Usua> LisUsua = mapo.getUsua();
            for (Usua usua : LisUsua) {
                if (usua.nom.equals(nomUsua)) {
                    idUsua = usua.nom;
                }
            }
        } catch (Exception es) {
            idUsua = "";
        }
        return idUsua;
    }
    /**
     * Encuentra el nombre de la peli con el ID, si no lo encuentra retorna vacio
     * @param idPeli Id del usuario a buscar
     * @return Nombre del usuario buscado
     */
    public static String findNomPeli(String idPeli) {
        String nomPeli = "";
        try {
            ArrayList<Peli> LisPeli = mapo.getPeli(idPeli);
            for (Peli peli : LisPeli) {
                nomPeli = peli.nom;
            }
        } catch (Exception ex) {
            nomPeli = "";
        }
        return nomPeli;
    }
    /**
     * Para encontrar la cantidad de peliculas, se necesita el id de la palicula analaizar
     * @param idPeli id necesario para la busqueda
     * @return retorna la cantida de pelis de ese tipo si hay un error devuelve -1
     */
    public static int findCantTotalPelis(String idPeli) {
        int cantTotalPelis = 0;
        try {
            ArrayList<Peli> LisPeli = mapo.getPeli(idPeli);
            for (Peli peli : LisPeli) {
                cantTotalPelis = peli.cantTotalPelis;
            }
        } catch (Exception ex) {
            cantTotalPelis = -1;
        }
        return cantTotalPelis;
    }
    /**
     * Convierte a string un int sino devuelve vacio
     * @param num Variable a evaluar
     * @return string de la variable o sino vacio
     */
    public static String ValidarString(int num) {
        try {
            return Integer.toString(num);
        } catch (Exception ex) {
            return "";
        }
    }
    /**
     * Validar la conversion a Integer y si hay error devuelve un 0
     * @param tex Variable string a evaluar
     * @return Retorna el int o un 0 si hay error
     */
    public static int ValidarInts(String tex) {
        try {
            return Integer.parseInt(tex);
        } catch (Exception e) {
            return -1;
        }

    }
    /**
     * Validar si hay algun null y convertirlo a un String    
     * @param analizar Variable a analizar
     * @param error Varible error que se devuelve si no se puede convertir
     * @return el analicis o el error asignado
     */
    public static String ValidarNulls(Object analizar, String error) {
        String r = "";
        try {
            if (analizar != null) {
                r = analizar.toString();
            } else {
                r = error;
            }
        } catch (Exception ex) {
            r = error;
        } finally {
            return r;
        }

    }
    /**
     * Crear columnas en un dataTable
     * @param vec vector cargado con los nombres de las columnas
     * @return retornar el dataTable con las columnas Cargadas
     */
    public static DefaultTableModel crearFilasNecesarias(String[] vec) {
        DefaultTableModel DTM = new DefaultTableModel();
        for (String s : vec) {
            DTM.addColumn(s);
        }
        return DTM;
    }
    /**
     * para hacer los confirm box mas pequenos del otro lado
     * @param mensaje lo que se quiere mostrar al usuario
     * @return da el resultado, sea true o false
     */
    public static boolean cMes(String mensaje){
        if (JOptionPane.showConfirmDialog(null, mensaje, "Pregunta", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0)
            return true;
        else
            return false;
    }       
    
    public static void calcularDependencias(String id)
    {
        ArrayList<Usua> LisUsua = mapo.getUsua(id);
        ArrayList<peliAquiladas> LisPeliAlqu = mapo.getpeliAquiladas(id);
        
        if (LisUsua.size() > 0 && LisPeliAlqu.size() > 0)
        {
            LisPeliAlquiDependencias = LisPeliAlqu;
            new Dependencias().setVisible(true);
        }        
    }
}
